module.exports = {
  // 获取用户信息
  getUserinfo: (req, res) => {
    const db = require('../db/index')

    const sql = 'select id,username,nickname,email,user_pic from ev_users where id=?'
    // 通过id查找用户的信息
    db.query(sql, [req.auth.id], (err, result) => {
      if (err) {
        return res.cc(1, err)
      }
      if (result.length !== 1) {
        return res.cc(1, '获取用户信息失败,请稍后重试')
      }
      res.send({
        status: 0,
        message: '获取用户信息成功',
        data: result[0]
      })
    })
  },
  // 更新用户信息
  updateUserinfo: (req, res) => {
    const db = require('../db/index')

    const info = req.body
    if (!info.id || Number(info.id.replace(/[^0-9]/ig, "")) < 1) {
      return res.cc(1, 'id不合法')
    }
    if (!info.nickname) {
      return res.cc(1, '昵称不合法')
    }
    if (!info.email ||
      info.email.split('@')[0].length === 0 ||
      info.email.substr(info.email.lastIndexOf('.') + 1).length === 0 ||
      info.email.indexOf('@') === -1 ||
      info.email.indexOf('.', info.email.lastIndexOf('@')) === -1 ||
      info.email.substr(info.email.lastIndexOf('@') + 1).split('.')[0].length === 0
    ) {
      return res.cc(1, '邮箱不合法')
    }
    const sql = 'update ev_users set ? where id=?'
    // 通过id来更新用户的信息
    db.query(sql, [info, info.id], (err, result) => {
      if (err) {
        return res.cc(1, err)
      }
      if (result.affectedRows !== 1) {
        return res.cc(1, '更新信息失败')
      }
      res.cc(0, '更新信息成功')
    })
  },
  // 修改密码
  updatePassword: (req, res) => {
    const db = require('../db/index')
    const bcryptjs = require('bcryptjs')

    const password = req.body.password
    if (!password) {
      return res.cc(1, '新密码不能为空')
    }
    const sql = 'select * from ev_users where id=?'
    // 通过id找到用户
    db.query(sql, [req.auth.id], (err, result) => {
      if (err) {
        return res.cc(1, err)
      }
      if (result.length !== 1) {
        return res.cc(1, '用户不存在')
      }
      const sql = 'update ev_users set password=? where id=?'
      const newPassword = bcryptjs.hashSync(password, 10)
      // 通过id修改密码
      db.query(sql, [newPassword, req.auth.id], (err, result) => {
        if (err) {
          return res.cc(1, err)
        }
        if (result.affectedRows !== 1) {
          return res.cc(1, '密码修改失败,请稍后重试')
        }
        res.cc(0, '密码修改成功')
      })
    })
  },
  // 更换头像
  updateAvatar: (req, res) => {
    const db = require('../db/index')

    const avatar = req.body.avatar
    // 判断是不是base64格式的图片
    if (!avatar || (avatar.indexOf('data:') === -1 && avatar.indexOf('base64') === -1)) {
      return res.cc(1, '格式错误')
    }
    const sql = 'update ev_users set user_pic=? where id=?'
    // 更新用户的头像
    db.query(sql, [avatar, req.auth.id], (err, result) => {
      if (err) {
        return res.cc(1, err)
      }
      if (result.affectedRows !== 1) {
        return res.cc(1, '更换头像失败,请稍后重试')
      }
      res.cc(0, '更换头像成功')
    })
  }
}